008ec70b1bb7bbba72e41c54d3ec38a823fb55ca,clc/modules/cluster-manager/src/main/java/com/eucalyptus/cluster/callback/DescribeSensorCallback.java,DescribeSensorCallback,fire,#DescribeSensorsResponse#,156

Before Change


                  combineReadWriteDiskMetric("VolumeReadOps", "VolumeWriteOps", metricCacheMap, "VolumeConsumedReadWriteOps", metricType, sensorData, dimensionType, value);

                  // Also need VolumeTotalReadWriteTime to compute VolumeIdleTime
                  combineReadWriteDiskMetric("VolumeTotalReadTime", "VolumeTotalWriteTime", metricCacheMap, "VolumeTotalReadWriteTime", metricType, sensorData, dimensionType, value);
                }
              }

After Change


                  final Double currentValue = value.getValue();
                  ec2DiskMetricCache.initializeMetrics(sensorData.getResourceUuid(), sensorData.getResourceName(), currentTimeStamp); // Put a place holder in in case we don't have any non-EBS volumes
                  boolean isEbsMetric = dimensionType.getDimensionName().startsWith("vol-");
                  boolean isEc2DiskMetric = !isEbsMetric && EC2_DISK_METRICS.contains(metricType.getMetricName().replace("Volume", "Disk"));
                  
                  if (isEbsMetric || isEc2DiskMetric) {
                    sendSystemMetric(new Supplier<InstanceUsageEvent>() {
                      @Override
                      public InstanceUsageEvent get() {
                        return new InstanceUsageEvent(
                          sensorData.getResourceUuid(),
                          sensorData.getResourceName(),
                          metricType.getMetricName(),
                          dimensionType.getSequenceNum(),
                          dimensionType.getDimensionName(),
                          currentValue,
                          currentTimeStamp);
                      }
                    });

                    if (isEbsMetric) {
                      // special case to calculate VolumeConsumedReadWriteOps
                      // As it is (VolumeThroughputPercentage / 100) * (VolumeReadOps + VolumeWriteOps), and we are hard coding
                      // VolumeThroughputPercentage as 100%, we will just use VolumeReadOps + VolumeWriteOps
                  
                      // And just in case VolumeReadOps is called DiskReadOps we do both cases...
                      combineReadWriteDiskMetric("DiskReadOps", "DiskWriteOps", metricCacheMap, "DiskConsumedReadWriteOps", metricType, sensorData, dimensionType, value);
                      combineReadWriteDiskMetric("VolumeReadOps", "VolumeWriteOps", metricCacheMap, "VolumeConsumedReadWriteOps", metricType, sensorData, dimensionType, value);

                      // Also need VolumeTotalReadWriteTime to compute VolumeIdleTime
                      combineReadWriteDiskMetric("VolumeTotalReadTime", "VolumeTotalWriteTime", metricCacheMap, "VolumeTotalReadWriteTime", metricType, sensorData, dimensionType, value);
                    }
                  } else {
                    // see if it is a volume metric